import QtQuick 1.0
import "Components"
import "Util/Util.js" as Util
import "Util/Database.js" as Database
import "WebAccess/TwitterAPI.js" as TwitterAPI

Rectangle {
    id: _rootContainer
    width: 360
    height: 600
    color: "#000000"

    //設定データ
    Item{
        id: _globalSetting
        property string versionNumber: "0.2.1"                  //バージョン番号

        property int updateInterval: 60                         //更新間隔（秒）

        property string wallpaperPath: "../../wallpaper.jpg"    //壁紙パス

        property color backgroundColor: "#000000"               //背景色
        property real backgroundOpacity: 0.8                    //背景の透過率（0.0～1.0）

        property color fontColorTitle: "#aaaadd"                //タイトル（ユーザー名）
        property color fontColorMessage: "#dddddd"              //本文（ツイート）
        property color fontColorInfomation: "#aaaaaa"           //情報（時間など）

    }

    //アイテムをクリックしてメニューだして何か処理させる時の情報を保存する
    Item{
        id: _selectItemInfo

        property string itemId: ""      //主にステータスID入れるのに使う
        property string screenName: ""  //screen nameの保存
        property string message: ""     //本文

        property string listId: ""      //listの内容を表示する時のID
        property string listName: ""    //listの名前

        property string retweetMessage: ""  //リツイート確認ダイアログのメッセージ

        property int mouse_x: 0         //マウスがクリックした場所
        property int mouse_y: 0         //マウスがクリックした場所

        //使ったらクリアする
        function clear(){
            itemId = "";
            screenName = "";
            message = "";
        }
    }


    Image {
        id: _wallpaper
        anchors.fill: parent
        source: _globalSetting.wallpaperPath
        fillMode: Image.PreserveAspectCrop
        clip: true
        smooth: true
    }

    //アクションバーの管理
    ActionBar {
        id: _actionBar
        anchors.left: _rootContainer.left
        anchors.top: _rootContainer.top
        width: _rootContainer.width

        //くるくる回す
//        loading: _contentContainer.loading

//        MouseArea {
//            anchors.fill: parent

//            onClicked: {
//                _toast.show("homhom");

////                _container.timelineSource = TwitterAPI.getTimelineURL();
////                _container.state = "";

////                var url = TwitterAPI.getTimelineURL();
////                Qt.openUrlExternally("http://relog.xii.jp/?param=a%3Db=");

////                console.log("action bar click : "+url);
////                console.log("homhom:" + TwitterAPI.getTimelineURL());
//            }
//        }
    }

    //つぶやきを入力するエリアの管理
    TweetContainer {
        id: _tweetContainer
        anchors.left: _rootContainer.left
        anchors.top: _actionBar.bottom
        anchors.right: _rootContainer.right
        height: 50
        opacity: 1
    }

    //実際の内容を表示する
    Container {
        id: _contentContainer
        color: _globalSetting.backgroundColor
        opacity: _globalSetting.backgroundOpacity
        anchors.left: _rootContainer.left
        anchors.top: _tweetContainer.bottom
        anchors.right: _rootContainer.right
        anchors.bottom: _rootContainer.bottom

    }

    //全面に表示するメニューのステート管理
    MenuContainer {
        id: _menuContainer
        anchors.fill: parent
    }

    //Anroidのトースト的なもの
    Toast{
        id: _toast

        x: (_rootContainer.width / 2 - width / 2)
        y: (_rootContainer.height / 2 - height / 2)
    }

    //ロード完了
    Component.onCompleted: {
        Util.outputDebugString("Main load completed");

        //ウインドウサイズ調節
        var w = Database.readData(Database.SETTING_KEY_MAIN_WINDOW_WIDTH);
        var h = Database.readData(Database.SETTING_KEY_MAIN_WINDOW_HEIGHT);
        if(w === undefined || h === undefined){
        }else{
            if(w > 300){
                width = w;
            }
            if(h > 300){
                height = h;
            }

        }

        //ツイートエリアを隠す
        _rootContainer.state = "NoneTweet";

        //認証情報の確認
        if(TwitterAPI.checkAuthInfo()){
            //更新
            _contentContainer.update();
        }else{
            //Auth
            _menuContainer.state = "Auth";
        }
    }


    //閉じる時
    Component.onDestruction: {
        Util.outputDebugString("Main onDestruction");

        //ウインドウサイズ調節
        Database.saveData(Database.SETTING_KEY_MAIN_WINDOW_WIDTH, width);
        Database.saveData(Database.SETTING_KEY_MAIN_WINDOW_HEIGHT, height);
    }

    states: [
        State {
            name: "NoneTweet"

            PropertyChanges {
                target: _tweetContainer
                opacity: 0
                height: 0
            }
        }
    ]

    transitions: Transition {
        NumberAnimation {
            easing.type: Easing.OutCubic
            target: _tweetContainer
            properties: "opacity, height"
            duration: 500
        }
    }
}
